#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "config.h"
#include <QIcon>
#include <QTimer>
#include <QPaintEvent>
#include <map.h>
#include <QPainter>
#include "heroplane.h"
#include <QKeyEvent>
#include "bullet.h"
#include "enemyplane.h"
#include <ctime>
#include <QDebug>
#include "bomb.h"
#include <QMouseEvent>
#include <QSound>
#include <QLabel>
#include <QLCDNumber>
#include <QPropertyAnimation>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    //初始化屏幕
    void initScene();
    //启动游戏 用于启动定时器对象
    void playGame();
    //更新坐标
    void updatePosition();
    //绘图事件
    void paintEvent(QPaintEvent *);
    //键盘按动判定
    void keyPressEvent(QKeyEvent *event);
    void up();
    void down();
    void left();
    void right();
    //鼠标移动事件
    void mouseMoveEvent(QMouseEvent *event);
    //敌机出场
    void enemyToScene();
    void collisionDetection();

private:
    Ui::MainWindow *ui;
    //定时器
    QTimer m_Timer;
    //地图对象
    Map m_map;
    //飞机对象
    HeroPlane m_hero;
    //倍速开关
    bool isStart;
    //进程速度
    int tid;
    //测试子弹代码
    //Bullet temp_bullet;
    //敌机数组
    EnemyPlane m_enemys[ENEMY_NUM];
    //敌机出场间隔记录
    int m_recorder;
    //战机血条
    QPixmap pix_blood;
    int m_blood_num = 200;
    //爆炸数组
    Bomb m_bombs[BOMB_NUM];
    //得分记录
    QLCDNumber *score = NULL;
    int num = 0;
    //游戏结束显示
    QLabel *overlable=NULL;
signals:
    //爆炸信号
    void  explosion();
};
#endif // MAINWINDOW_H
